package com.example.collection

/**
 * 学习Map
 * Created by Walkud on 17/8/31.
 */
object TestMap {

    @JvmStatic
    fun main(array: Array<String>) {

        outItem()
        println()

        putItem()
        println()

        removeItem()
        println()

        clearItem()
        println()

        forMap()
        println()
    }

    /**
     * 输出Item 某个Key的Value
     */
    fun outItem() {
        val items = getMapItem()

        println("打印Value——>" + items["Coffee"])
    }

    /**
     * 添加操作必须使用MutableMap
     */
    fun putItem() {
        val mutableMap = getMutableMap()

        //修改存在的Value
        mutableMap["Apple"] = "￥8"

        //添加新的Key-Value
        mutableMap["Oil"] = "￥1"

        println("添加——>" + mutableMap)
    }

    /**
     * 移除指定Item，必须使用MutableMap
     */
    fun removeItem() {
        val mutableMap = getMutableMap();

        //移除不存在Item，无效
        mutableMap.remove("Oil")

        //移除指定的Item
        mutableMap.remove("Apple")

        println("移除——>" + mutableMap)
    }

    /**
     * 清空Map,必须使用MutableMap
     */
    fun clearItem() {
        val mutableMap = getMutableMap()

        mutableMap.clear()
        println("清空——>" + mutableMap)
    }

    /**
     * 遍历
     */
    fun forMap() {
        val items = getMapItem()

        println("遍历")
        for ((k, v) in items) {
            println("k=$k,v=$v")
        }
    }

    /**
     * 可变Map
     * MutableMap在Map基础上扩展了put、remove、putAll、clear等方法
     *
     */
    fun getMutableMap(): MutableMap<String, String> = mutableMapOf("Apple" to "￥5", "Pear" to "￥4")

    /**
     * 不可变Map
     * 没有put、remove、putAll、clear等方法
     */
    fun getMapItem(): Map<String, String> = mapOf("Coffee" to "￥10", "meat" to "￥9")
}